package com.blog.bean.vo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Set;

/**
 * @author 任浩
 * @version 1.0
 */

@Component
public class RedisUtils {

    @Autowired
    private RedisTemplate<String,Object> redisTemplate;


    /**
     * 使用Redis的HyperLogLog实现对浏览器的访问量统计，
     * 并且在夜间使用定时任务把访问量统计数据存入Mysql。
     * @param key
     * @param value
     */
    public Long setViewCount(String key,String value){
        if(value == null){
            value = "";
        }
        Long add = redisTemplate.opsForHyperLogLog().add(key, value);
        return add;
    }

    /**
     * 获取浏览量数据.
     * @param key
     * @return
     */
    public Integer getViewCount(String key){
        return redisTemplate.opsForHyperLogLog().size(key).intValue();
    }

    /**
     * 删除数据
     * @param key
     */
    public void deleteViewCount(String key){
        redisTemplate.delete(key);
    }

    /**
     * 判断某个key是否存在
     */
    public boolean isExist(String key){
        return redisTemplate.hasKey(key);
    }


    /**
     * 模糊匹配redis中的key
     */
    public Set<String> patternKeys(String pattern){
        Set<String> keys = redisTemplate.keys(pattern);
        return keys;
    }

}
